package com.jsj.subway.ai.demo.constants;

import com.jsj.subway.ai.demo.dto.AlarmMessage;
import cn.hutool.core.date.DateUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.util.*;

@Component
public class Constants {

    @Value("${pdf.base_uri}")
    private String baseUri;

    @PostConstruct
    public void init() {
        ConfigPropertiesHolder.baseUri = this.baseUri;
        initializeAlarmMessages();
    }
    public static String getBaseUri() {
        return ConfigPropertiesHolder.baseUri;
    }

    private static class ConfigPropertiesHolder {
        private static String baseUri;
    }

    private static AlarmMessage alarmMessage1 ;

    private static AlarmMessage alarmMessage2 ;

    private static AlarmMessage alarmMessage3 ;
    private void initializeAlarmMessages(){
        alarmMessage1 = AlarmMessage.builder()
                //.createTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))
                .line("6号线")
                //.station("王家港")
                .type("1500V馈线柜")
                .alarmType("信号")
                .name("3#馈线柜")
                .describe("大电流脱扣动作")
                .firstMessage("接下来请作为一个故障信息通知者，将获得的故障报文信息，第一时间通知给用户，例如：\"根据系统报文显示，6号线王家港站于【xxxx时间】发生【xxx故障】\"，\n" +
                        "接着需要向用户提出对本站及邻站启动自动重合闸操作的申请，例如：\"经初步分析，需要启动本站和邻站自动重合闸操作，请确认是否现在执行？ \n 为您定位电路图与联锁关系图 \n <img src='" + ConfigPropertiesHolder.baseUri + "/statics/huilu.png'/> \n <img src='" + ConfigPropertiesHolder.baseUri + "/statics/luoji.png'/>\"\n" +
                        "\n" +
                        "现在开始，你收到了系统报文：6号线，{}站变电所，时间:{}，出现大电流脱扣故障告警 \n")
                .build();

        alarmMessage2  = AlarmMessage.builder()
                //.createTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))
                .line("6号线")
                //.station("王家港")
                .type("1500V馈线柜")
                .alarmType("信号")
                .name("3#馈线柜")
                .describe("大电流脱扣动作")
                .firstMessage("接下来请作为一个故障信息通知者，将获得的故障报文信息，第一时间通知给用户，例如：\"根据系统报文显示，6号线王家港站于【xxxx时间】发生【xxx故障】\"，\n" +
                        "接着需要向用户提出对本站及邻站启动自动重合闸操作的申请，例如：\"经初步分析，需要启动本站和邻站自动重合闸操作，请确认是否现在执行？ \n 为您定位电路图与联锁关系图 \n  <img src='"+ ConfigPropertiesHolder.baseUri+"/statics/huilu.png'/> \n <img src='"+ ConfigPropertiesHolder.baseUri+"/statics/luoji.png'/> \"\n" +
                        "\n" +
                        "现在开始，你收到了系统报文：6号线，{}站变电所，时间:{}，出现大电流脱扣故障告警 \n" )
                .build();

        alarmMessage3 = AlarmMessage.builder()
                //.station("王家港")
                //.createTime(DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))
                .line("6号线")
                .type("1500V馈线柜")
                .alarmType("信号")
                .name("3#馈线柜")
                .describe("大电流脱扣动作")
                .firstMessage("接下来请作为一个故障信息通知者，将获得的故障报文信息，第一时间通知给用户，例如：\"根据系统报文显示，6号线王家港站于【xxxx时间】发生【xxx故障】\"，\n" +
                        "接着需要向用户提出对本站及邻站启动自动重合闸操作的申请，例如：\"经初步分析，需要启动本站和邻站自动重合闸操作，请确认是否现在执行？ \n 为您定位电路图与联锁关系图 \n <img src='"+ ConfigPropertiesHolder.baseUri+"/statics/huilu.png'/> \n <img src='"+ ConfigPropertiesHolder.baseUri+"/statics/luoji.png'/>    \"\n" +
                        "\n" +
                        "现在开始，你收到了系统报文：6号线，{}站变电所，时间:{}，出现大电流脱扣故障告警 \n" )
                .build();
        map.put(0,alarmMessage1);
        map.put(1,alarmMessage2);
        map.put(2,alarmMessage3);
    }
    public final static Map<Integer,AlarmMessage> map = new HashMap<>();

    public final static List<String> list = new ArrayList<>();
    static {
        //王家港，抓马山，九顶山，马家楼，北门外
        list.add("王家港");
        list.add("抓马山");
        list.add("九顶山");
        list.add("马家楼");
        list.add("北门外");
    }

//0：本站及邻站均自动重合闸成功
//
//1：本站自动重合闸不成功, 临站自动重合闸成功
//
//2：本站及邻站自动重合闸均不成功
    public final static Map<Integer,String> sameMap = new HashMap<>();
    static {
        sameMap.put(0,"执行重合闸操作的结果是：本站及邻站均自动重合闸**成功**");
        sameMap.put(1,"执行重合闸操作的结果是：本站自动重合闸**不成功**, 临站自动重合闸**成功**");
        sameMap.put(2,"执行重合闸操作的结果是：本站及邻站自动重合闸均**不成功**");
    }

    public final static Map<Integer,String> resultMap = new HashMap<>();
    static {
        resultMap.put(0,"3#馈线柜断路器重合闸成功,3#馈线柜断路器重合闸成功");
        resultMap.put(1,"3#馈线柜断路器重合闸不成功,3#馈线柜断路器重合闸成功");
        resultMap.put(2,"3#馈线柜断路器重合闸不成功,3#馈线柜断路器重合闸不成功");
    }
}
